// axios二次封装
import axios from 'axios'
import { useLoginStore } from '@/store/login.ts'
import { ElMessage } from "element-plus";

const http = axios.create({
  baseURL: 'http://sph-api.atguigu.cn', // 基础路径会携带 /api
  timeout: 6000,
})

// 请求拦截器
http.interceptors.request.use((config) => {
  const { token } = useLoginStore()
  
  // config配置对象有一个请求头headers属性，用于给服务器端携带公共参数
  if(token) {
    config.headers.token = token
  }

  // 返回配置对象
  return config
})

// 响应拦截器
http.interceptors.response.use((response) => {
  return response.data
}, (error) => {
  //处理网络错误
  let msg = '';
  let status = error.response.status;
  switch (status) {
    case 401:
      msg = "token过期";
      break;
    case 403:
      msg = '无权访问';
      break;
    case 404:
      msg = "请求地址错误";
      break;
    case 500:
      msg = "服务器出现问题";
      break;
    default:
      msg = "无网络";
      break;
  }
  ElMessage({
    type: 'error',
    message: msg
  })
  return Promise.reject(error);
})

export default http;